﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02_工厂方法模式
{
    /// <summary>
    /// 多个工厂类，提供一个工厂接口来声明创建父对象的方法，
    /// 而由工厂接口的子类（具体的工厂类）来具体实现工厂方法，创建具体的产品对象（子类）。
    /// 
    /// 新加功能 /产品时，只要添加一个具体工厂和具体产品就可以了
    /// 完全符合“开闭原则”。（只添加源代码（扩展开放），无源代码的修改（封闭））
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            IFactory operFactory = new AddFactory(); //在此处改需要创建的对象
           // IFactory operFactory = new SubFactory();
            Operation oper = operFactory.CreateOperation();         
            oper.NumberA = 2;
            oper.NumberB = 4;
            double result = oper.GetResult();
            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}
